// 不用在页面中显示，可以不在data中定义
let musicList = []
// 正在播放歌曲的index
let nowPlayingIndex = 0
// 获取全局位移的背景音频管理器
const backgroundAudioManager = wx.getBackgroundAudioManager()
const app = getApp()
Page({
  data: {
    picUrl: '',
    isPlayer: false, // flase表示不播放，true表示正在播放
    isLyricShow: false, // 表示当前歌词是否显示
    lyric: '', // 歌词
    isSame: false, // 表示是否为同一首歌曲
    isVIP: false // 表示是否要有VIP权限播放
  },
  onLoad(options) {
    console.log(options)
    nowPlayingIndex = options.index
    musicList = wx.getStorageSync('musiclist')
    this.loadMusicDetail(options.musiclistId)
  },
  loadMusicDetail(musiclistId) {
    // 判断是否为同一首歌曲
    console.log(musiclistId, app.getPlayMusicId())
    if (musiclistId === app.getPlayMusicId()) {
      this.setData({
        isSame: true
      })
    } else {
      this.setData({
        isSame: false
      })
    }
    if (!this.data.isSame) {
      // 不是同一首歌曲播放前先暂停
      backgroundAudioManager.stop()
    }

    let music = musicList[nowPlayingIndex]
    wx.setNavigationBarTitle({
      title: music.name,
    })
    this.setData({
      picUrl: music.al.picUrl,
      isPlayer: false
    })

    app.setPlayMusicId(musiclistId)

    wx.showLoading({
      title: '歌曲加载中...',
    })
    wx.cloud.callFunction({
      name: 'music',
      data: {
        musiclistId,
        $url: 'musicUrl'
      }
    }).then(res => {
      const result = JSON.parse(res.result.data)
      // 网易云VIP url链接无权限播放
      // this.data.isVIP = true
      if (result.data[0].url === null) {
        wx.showToast({
          title: '无权限播放'
        })
        this.setData({
          isVIP: false
        })
        // this.data.isVIP = false
        return
      }
      // 同一首歌不重新设置
      if (!this.data.isSame) {
        backgroundAudioManager.src = result.data[0].url
        backgroundAudioManager.title = music.name
        backgroundAudioManager.coverImgUrl = this.data.picUrl

				// 保存播放历史
				this.savePlayHistory()
      }

      this.setData({
        isPlayer: true,
        isVIP: true
      })
      console.log(this.data.isVIP)

      wx.hideLoading()

      // 加载歌词
      wx.cloud.callFunction({
        name: 'music',
        data: {
          musiclistId,
          $url: 'lyric'
        }
      }).then(res => {
        let lyric = '暂无歌词' // 有的歌是没有歌词的
        const lrc = JSON.parse(res.result.data).lrc

        if (lrc) {
          lyric = lrc.lyric
        }
        this.setData({
          lyric
        })
      })
    })
  },
  // 播放暂停
  togglePlaying() {
    // VIP歌曲无法点击播放按钮
    if (!this.data.isVIP) {
      wx.showToast({
        title: '无权限播放',
      })
      return
    }
    if (this.data.isPlayer) {
      backgroundAudioManager.pause()
    } else {
      backgroundAudioManager.play()
    }
    this.setData({
      isPlayer: !this.data.isPlayer
    })
  },
  // 上一首
  onPrev() {
    nowPlayingIndex--
    if (nowPlayingIndex < 0) {
      nowPlayingIndex = musicList.length - 1
    }
    this.loadMusicDetail(musicList[nowPlayingIndex].id)
  },
  // 下一首
  onNext() {
    nowPlayingIndex++
    if (nowPlayingIndex > musicList.length - 1) {
      nowPlayingIndex = 0
    }
    this.loadMusicDetail(musicList[nowPlayingIndex].id)
  },
  // 显示歌词
  onChangeLyricShow() {
    this.setData({
      isLyricShow: !this.data.isLyricShow
    })
  },
	// 更新播放的时间
  timeUpdate(e) {
    this.selectComponent('.lyric').update(e.detail.currentTime)
  },
  onPlay() {
    this.setData({
      isPlayer: true
    })
  },
  onPause() {
    this.setData({
      isPlayer: false
    })
  },
	// 保存播放历史
	savePlayHistory() {
		// 当前正在播放的歌曲
		const music = musicList[nowPlayingIndex]
		const openid = app.globalData.openid
		const history = wx.getStorageSync(openid)
		// 歌曲已经存在播放历史中不再添加
		let bHave = false
		for (let i =0; i < history.length; i++) {
			if (history[i].id === music.id) {
				bHave = true
				break
			}
		}
		if (!bHave) {
			history.unshift(music)
			wx.setStorage({
				key: openid,
				data: history
			})
		}
	}
})